1️⃣ Introducción
Este análisis tiene como objetivo calcular probabilidades condicionales en el dataset Oral Cancer Prediction, respondiendo preguntas como:
✔ ¿Cuál es la probabilidad de tener un diagnóstico positivo de cáncer si el paciente fuma? ✔ ¿Cómo influye el consumo de alcohol en el diagnóstico?
Estos cálculos son clave para evaluar factores de riesgo y mejorar la toma de decisiones en salud.
2️⃣ Carga de Librerías y Configuración
# 📌 Cargar configuración global
# Contiene rutas de directorios, opciones de visualización y otros parámetros relevantes
install.packages("here",dependencies=TRUE)
library(here)
source(here("reportes/Proy_Oral_Cancer_Prediction/00_CONFIGURACION.r"))
# 📌 Cargar librerías necesarias
library(here) # Manejo de rutas dinámicas
library(janitor) # Limpieza de nombres de columnas
library(summarytools) # Resumen estadístico detallado
library(ggplot2) # Gráficos
library(dplyr) # Manipulación de datos
library(plotly) # Gŕaficos Interactivos
# 📌 Configuración de gráficos globales
theme_set(theme_minimal())
# 📌 Cargar scripts de preprocesamiento
source(here("scripts/utils.r"))
source(here("scripts/1_preprocesamiento_esp_dataset.r"))
source(here("scripts/3_analisis_probabilidad.r"))
# 📌 Cargar dataset limpio
dataset_oral_cancer <- preprocesar_datos(here("datasets/oral_cancer_data_limpio.csv"), "Oral Cancer")
## 📥 Cargando datos del proyecto: Oral Cancer
## 🧹 Realizando limpieza de datos...
## 📊 Aplicando preprocesamiento específico para Oral Cancer...
## ✅ Preprocesamiento completado para: Oral Cancer
3️⃣ Cálculo de Probabilidades Condicionales
Analizamos la relación entre factores de riesgo y diagnóstico temprano de cáncer.
# Calcular probabilidades
resultados_tobacco <- calcular_probabilidades(
data = dataset_oral_cancer,
condicionante = "tobacco_use",
objetivo = "early_diagnosis"
)
# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_tobacco$tabla_contingencia)
## # A tibble: 4 × 3
## tobacco_use early_diagnosis n
## <fct> <fct> <int>
## 1 No No 7775
## 2 No Yes 9158
## 3 Yes No 30639
## 4 Yes Yes 37350
cat("\nProbabilidades condicionales:\n")
##
## Probabilidades condicionales:
print(resultados_tobacco$probabilidades_condicionales)
## # A tibble: 4 × 4
## tobacco_use early_diagnosis n prob_condicional
## <fct> <fct> <int> <dbl>
## 1 No No 7775 0.459
## 2 No Yes 9158 0.541
## 3 Yes No 30639 0.451
## 4 Yes Yes 37350 0.549
cat("\nProbabilidades marginales de early_diagnosis:\n")
##
## Probabilidades marginales de early_diagnosis:
print(resultados_tobacco$probabilidades_marginales)
## # A tibble: 2 × 3
## early_diagnosis n prob_marginal
## <fct> <int> <dbl>
## 1 No 38414 0.452
## 2 Yes 46508 0.548
# Calcular probabilidades para alcohol_consumption y early_diagnosis
resultado_alcohol <- calcular_probabilidades(
data = dataset_oral_cancer,
condicionante = "alcohol_consumption",
objetivo = "early_diagnosis"
)
# Mostrar resultados
cat("\nProbabilidad de diagnóstico positivo dado que el paciente consume alcohol:\n")
##
## Probabilidad de diagnóstico positivo dado que el paciente consume alcohol:
prob_positivo_alcohol <- resultado_alcohol$probabilidades_condicionales %>%
filter(alcohol_consumption == "Yes", early_diagnosis == "Yes") %>%
pull(prob_condicional)
print(prob_positivo_alcohol)
## [1] 0.5474391
cat("\nTabla de contingencia para alcohol_consumption y early_diagnosis:\n")
##
## Tabla de contingencia para alcohol_consumption y early_diagnosis:
print(resultado_alcohol$tabla_contingencia)
## # A tibble: 4 × 3
## alcohol_consumption early_diagnosis n
## <fct> <fct> <int>
## 1 No No 15361
## 2 No Yes 18622
## 3 Yes No 23053
## 4 Yes Yes 27886
cat("\nProbabilidades condicionales:\n")
##
## Probabilidades condicionales:
print(resultado_alcohol$probabilidades_condicionales)
## # A tibble: 4 × 4
## alcohol_consumption early_diagnosis n prob_condicional
## <fct> <fct> <int> <dbl>
## 1 No No 15361 0.452
## 2 No Yes 18622 0.548
## 3 Yes No 23053 0.453
## 4 Yes Yes 27886 0.547
cat("\nProbabilidades marginales de early_diagnosis:\n")
##
## Probabilidades marginales de early_diagnosis:
print(resultado_alcohol$probabilidades_marginales)
## # A tibble: 2 × 3
## early_diagnosis n prob_marginal
## <fct> <int> <dbl>
## 1 No 38414 0.452
## 2 Yes 46508 0.548
4️⃣ Visualización de Resultados
Generamos gráficos interactivos para una mejor interpretación de los datos.
# Visualizar probabilidades condicionales
p_tobacco <- visualizar_probabilidad_condicional(
data = dataset_oral_cancer,
condicionante = "tobacco_use",
objetivo = "early_diagnosis",
titulo = "Probabilidad de Diagnóstico Temprano según Uso de Tabaco",
xlab = "Uso de Tabaco",
guardar = TRUE,
ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_tobacco.png")
)
# Mostrar gráfico interactivo
p_tobacco
# Visualizar probabilidades condicionales
p_alcohol <- visualizar_probabilidad_condicional(
data = dataset_oral_cancer,
condicionante = "alcohol_consumption",
objetivo = "early_diagnosis",
titulo = "Probabilidad de Diagnóstico Temprano según Consumo de Alcohol",
xlab = "Consumo de Alcohol",
guardar = TRUE,
ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_alcohol.png")
)
# Mostrar gráfico interactivo
p_alcohol
p_tumors_vs_treatment <- visualizar_probabilidad_condicional(
data = dataset_oral_cancer,
condicionante = "treatment_type",
objetivo = "tumor_size_cm",
titulo = "Probabilidad tamaño del tumor según tratamiento ",
xlab = "Género",
guardar = TRUE,
ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_tumorsize_vs_treatment.png"),
bins = 5 # Dividir en 5 intervalos
)
# Mostrar gráfico interactivo
p_tumors_vs_treatment